An embedded system refers to a computer system or a computing apparatus based on a microprocessor. The embedded system is designed to perform an exclusive operation or to be used with a specific application S/W package. A personal digital assistant (PDA), a cellular phone, a digital TV and a game machine, and the like, are examples of such embedded system. Conventionally, these embedded systems are operated either by an exclusive program without the need of an operating system (OS) or by employing a simple operating system and the application S/W package.
However, recent trend for a highly sophisticated embedded system has intensified a demand for an operating system capable of providing high technologies such as TCP/IP (transmission control protocol/Internet Protocol) communication agreement, flash memory management and support for a 32-bit high-speed CPUs (central processing units). Such current needs lead many embedded system developers to see Linux as a cost-effective and a convenient operating system for embedded systems. The reason is that the Linux operating system includes many functionalities required for a modern operating system and can be readily modified and distributed based on a GPL (GNU Public License).
The embedded system includes a CPU, a memory, a peripheral equipment, etc. Different embedded systems have different CPUs, memories and peripheral equipments, which is different from a case of general personal computers. Generally speaking, embedded systems have a small memory and a CPU not that fast. Accordingly, specifications of an embedded system should be considered at a time of installing Linux therein. In addition, it should be possible to select application S/W packages to be installed at a target system. Still further, a development environment where a user can selectively install files in an application S/W package should be prepared.
It is a frequent case that there exits dependent relationship between a Linux kernel and application S/W packages, which makes it difficult to appropriately install the Linux kernel and the application S/W packages at a target computer. For example, an X window application package can be normally operated only if an option ‘unix domain socket’ is selected in the Linux kernel. Thus, the Linux kernel and the application S/W packages should be installed together in order that the dependent relationship therebetween is properly examined and reported to the user, and the application S/W packages are automatically installed at the target computer.
In general, the Linux kernel and the application S/W packages are set in different ways. The Linux kernel is set by using a BASH shell script computer language and a TK script computer language, and the like, while there is no generalized way for the setup of the application S/W packages but a peculiar language is employed for each package. Therefore, it is impossible to describe the correlation between the Linux kernel and the application S/W packages. As an effort to solve this problem, Lineo Embedix, for instance, employs an ECD (Embedix Component Descriptor) file in which setup options of the Linux kernel and the application S/W packages are described together. The Linux kernel and the application S/W packages respectively have their own ECD files and describe therein their setup options. By letting each option in an ECD file have a specific dependency rule, integrated configuration of the Linux kernel and the application S/W packages can be allowed.
The ECD file, however, is not a generally used format but the one only employed by Lineo Embedix. The Linux kernel has 2000 setup options, approximately. If these setup options are converted into the ECD files, the data amount of produced ECD files will be summed up to several mega bytes. Furthermore, it is very difficult to automatically convert the setup options of the Linux kernel into the ECD files.
A CLM2 is a computer language developed by Eric Raymond for the purpose of simplifying a complicated setup method of the Linux kernel. Though the CML2 language is initially developed to alleviate the complicacy of the setup of the Linux kernel, it should be noted herein that the CML2 language is an extensible language that has a wide range of application. The CML2 language is composed of symbols for describing setup options, menus for defining hierarchical relationships between the symbols, and dependency rules for specifying dependent relations between the symbols. The CML2 is a rule-based language. Thus, if there occurs violation of the rule while setting values of the symbols, such rule violation is automatically examined and reported to the user. The CML2 language will be employed as a basic language for the setup of the Linux kernel, starting from its version 2.4.x. CML2 rules are compiled by a CML2 compiler and are displayed to the user via a CML2 front-end. At this time, the result can be provided in the form of a text or graphics. The user selects the setup options displayed by the CML2 front-end depending on the necessity of the target computer, and final results of such setting process are symbols selected by the user.
As described above, the Linux kernel and the application S/W packages should be described by using a same method for the integration of the Linux kernel and the application S/W packages. Though conventional Lineo Embedix employs the ECD file format for this purpose, there still exists a defect in that data amount is greatly increased up to several mega bytes when the setup options of the Linux kernel are converted into the ECD files and, furthermore, the ECD files should be produced in a manual mode every time the Linux kernel is modified. Therefore, if it is considered that the Linux kernel is an open source and thus frequently modified, the method using the ECD files proves to be inefficient.